//
// PicoMax
// Copyright 2012 Thomas W. Holtquist
// www.skewworks.com
//
// GPL 3.0 Licensed
//

using System;
using Microsoft.SPOT;

namespace Skewworks.PicoMax
{

    /// <summary>
    /// Event delegate for Button Pressed
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="ButtonID">ID of button pressed</param>
    [Serializable]
    public delegate void OnButtonPressed(object sender, int ButtonID);

    /// <summary>
    /// Event delegate for Button Released
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="ButtonID">ID of button released</param>
    [Serializable]
    public delegate void OnButtonReleased(object sender, int ButtonID);

    /// <summary>
    /// Event delegate for Double Tap
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="e">Location of double tap</param>
    [Serializable]
    public delegate void OnDoubleTap(object sender, Point e);

    /// <summary>
    /// Event delegate for Got Focus
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    [Serializable]
    public delegate void OnGotFocus(object sender);

    /// <summary>
    /// Event delegate for Lost Focus
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    [Serializable]
    public delegate void OnLostFocus(object sender);

    /// <summary>
    /// Event delegate for Tap
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="e">Location of tap</param>
    [Serializable]
    public delegate void OnTap(object sender, Point e);

    /// <summary>
    /// Event delegate for Tap Hold
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="e">Location of tap and hold</param>
    [Serializable]
    public delegate void OnTapHold(object sender, Point e);
    
    /// <summary>
    /// Event delegate for Touch Down
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="e">Location of touch down</param>
    [Serializable]
    public delegate void OnTouchDown(object sender, Point e);

    /// <summary>
    /// Event delegate for Touch Event
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="e">Type of touch reported</param>
    [Serializable]
    public delegate void OnTouchEvent(object sender, TouchType e, Point pt);

    /// <summary>
    /// Event delegate for Touch Gesture
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="e">Type of touch gesture</param>
    [Serializable]
    public delegate void OnTouchGesture(object sender, TouchType e);

    /// <summary>
    /// Event delegate for Touch Move
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="e">Location of touch move</param>
    [Serializable]
    public delegate void OnTouchMove(object sender, Point e);

    /// <summary>
    /// Event delegate for Touch Up
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="e">Location of Touch Up</param>
    [Serializable]
    public delegate void OnTouchUp(object sender, Point e);

    /// <summary>
    /// Event delegate for Value Changes
    /// </summary>
    /// <param name="sender">Object raising the event</param>
    /// <param name="Value">New value</param>
    [Serializable]
    public delegate void OnValueChanged(object sender, int Value);

}
